package com.css.zfzx.fwsjcj.modules.user.service;

import com.alibaba.fastjson.JSONObject;
import com.css.bpm.platform.org.user.repository.entity.UserEntity;
import com.css.bpm.platform.page.login.viewobjects.PwdCheck;
import com.css.zfzx.fwsjcj.modules.user.entity.FwUserEntity;
import com.css.zfzx.fwsjcj.modules.user.vo.UserQueryVo;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author lxg
 */
public interface FwUserService {
    /***
     * App端用户注册
     * @param fwUserEntity
     */
    void saveUserApp(FwUserEntity fwUserEntity);

    /***
     * PC端用户注册
     * @param fwUserEntity
     */
    void saveUser(FwUserEntity fwUserEntity);

    /**
     * 分页查询用户
     *
     * @param request
     * @param userQueryVo
     * @param curPage
     * @param pageSize
     * @return
     */
    JSONObject getPage(HttpServletRequest request, UserQueryVo userQueryVo, int curPage, int pageSize);

    /***
     * 根据用户id查询用户
     * @param userId
     * @return
     */
    FwUserEntity findByUserId(String userId);

    /***
     * 批量逻辑删除用户
     * @param ids
     */
    void deletUser(List<String> ids);

    /***
     * App端登录验证
     * @param userName
     * @param password
     * @param privateKey
     * @return
     * @throws Exception
     */
    PwdCheck doLogin(String userName, String password, String privateKey) throws Exception;

    /****
     * 审核用户
     * @param type
     * @param ids
     * @throws Exception
     */
    void updateType(String type, List<String> ids) throws Exception;

    void updateUser(UserEntity userEntity);

    /**
     * 获取不同类型用户
     *
     * @param type
     * @return
     */
    List<UserEntity> getAppUser(String type);

    /**
     * 根据用户名查询
     *
     * @return
     */
    FwUserEntity findByUserName(String userName);

    /**
     * 根据身份证号查询
     *
     * @return
     */
    FwUserEntity findByIdNumber(String userName);

    /**
     * 根据电话号码查询
     *
     * @param userName
     * @return
     */
    FwUserEntity findByMobilePhon(String userName);

    /**
     * 根据baseUserId查询审核的用户
     *
     * @param baseUserId
     * @return
     */
    FwUserEntity findByBaseUserId(String baseUserId);

    /**
     * 物理删除房屋用户(只删除fw_user表的用户)
     *
     * @param ids
     */
    void deleteFwUser(List<String> ids);
}
